package com.mj.haier.calc.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.*;

import org.springframework.data.elasticsearch.annotations.Document;
import java.io.Serializable;
import java.time.Instant;
import java.util.Objects;

/**
 * The AzEncourageCash entity.
 * 安装单激励兑现明细
 * @author ycm
 */
@ApiModel(description = "The AzEncourageCash entity. 安装单激励兑现明细 @author ycm")
@Entity
@Table(name = "az_encourage_cash")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "azencouragecash")
public class AzEncourageCash implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    private Long id;

    /**
     * 父表ID
     */
    @ApiModelProperty(value = "父表ID")
    @Column(name = "parent_id")
    private Long parentId;

    /**
     * 结算批次号
     */
    @ApiModelProperty(value = "结算批次号")
    @Column(name = "settle_batch_id")
    private String settleBatchId;

    /**
     * 激励单号
     */
    @ApiModelProperty(value = "激励单号")
    @Column(name = "encourage_id")
    private String encourageId;

    /**
     * 激励兑现首要对象， 应为车队ID
     */
    @ApiModelProperty(value = "激励兑现首要对象， 应为车队ID")
    @Column(name = "encourage_object")
    private String encourageObject;

    /**
     * 激励兑现次要对象， 应为司机ID
     */
    @ApiModelProperty(value = "激励兑现次要对象， 应为司机ID")
    @Column(name = "encourage_second_object")
    private String encourageSecondObject;

    /**
     * 已兑现的激励
     */
    @ApiModelProperty(value = "已兑现的激励")
    @Column(name = "pay_cash")
    private String payCash;

    /**
     * 未兑现的激励
     */
    @ApiModelProperty(value = "未兑现的激励")
    @Column(name = "outstanding")
    private String outstanding;

    /**
     * 是否已回传CDK
     */
    @ApiModelProperty(value = "是否已回传CDK")
    @Column(name = "incentive_to_cdk")
    private String incentiveToCdk;

    /**
     * 预算体
     */
    @ApiModelProperty(value = "预算体")
    @Column(name = "encourage_budget")
    private String encourageBudget;

    /**
     * 标识激励来源系统， CDK，其他等
     */
    @ApiModelProperty(value = "标识激励来源系统， CDK，其他等")
    @Column(name = "source_system")
    private String sourceSystem;

    /**
     * 订单产业编码, 会验证当前末级小微存在
     */
    @ApiModelProperty(value = "订单产业编码, 会验证当前末级小微存在")
    @Column(name = "source_name_code")
    private String sourceNameCode;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Column(name = "remark")
    private String remark;

    @Column(name = "gmt_modified")
    private Instant gmtModified;

    @Column(name = "modified_user")
    private String modifiedUser;

    @Column(name = "gmt_create")
    private Instant gmtCreate;

    @Column(name = "create_user")
    private String createUser;

    /**
     * 备用字段 add1
     */
    @ApiModelProperty(value = "备用字段 add1")
    @Column(name = "add_1")
    private String add1;

    /**
     * 备用字段 add2
     */
    @ApiModelProperty(value = "备用字段 add2")
    @Column(name = "add_2")
    private String add2;

    /**
     * 备用字段 add3
     */
    @ApiModelProperty(value = "备用字段 add3")
    @Column(name = "add_3")
    private String add3;

    /**
     * 备用字段 add4
     */
    @ApiModelProperty(value = "备用字段 add4")
    @Column(name = "add_4")
    private String add4;

    /**
     * 备用字段 add5
     */
    @ApiModelProperty(value = "备用字段 add5")
    @Column(name = "add_5")
    private String add5;

    // jhipster-needle-entity-add-field - JHipster will add fields here, do not remove
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public AzEncourageCash id(Long id){
        this.id = id;
        return this;
    }

    public Long getParentId() {
        return parentId;
    }

    public AzEncourageCash parentId(Long parentId) {
        this.parentId = parentId;
        return this;
    }

    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

    public String getSettleBatchId() {
        return settleBatchId;
    }

    public AzEncourageCash settleBatchId(String settleBatchId) {
        this.settleBatchId = settleBatchId;
        return this;
    }

    public void setSettleBatchId(String settleBatchId) {
        this.settleBatchId = settleBatchId;
    }

    public String getEncourageId() {
        return encourageId;
    }

    public AzEncourageCash encourageId(String encourageId) {
        this.encourageId = encourageId;
        return this;
    }

    public void setEncourageId(String encourageId) {
        this.encourageId = encourageId;
    }

    public String getEncourageObject() {
        return encourageObject;
    }

    public AzEncourageCash encourageObject(String encourageObject) {
        this.encourageObject = encourageObject;
        return this;
    }

    public void setEncourageObject(String encourageObject) {
        this.encourageObject = encourageObject;
    }

    public String getEncourageSecondObject() {
        return encourageSecondObject;
    }

    public AzEncourageCash encourageSecondObject(String encourageSecondObject) {
        this.encourageSecondObject = encourageSecondObject;
        return this;
    }

    public void setEncourageSecondObject(String encourageSecondObject) {
        this.encourageSecondObject = encourageSecondObject;
    }

    public String getPayCash() {
        return payCash;
    }

    public AzEncourageCash payCash(String payCash) {
        this.payCash = payCash;
        return this;
    }

    public void setPayCash(String payCash) {
        this.payCash = payCash;
    }

    public String getOutstanding() {
        return outstanding;
    }

    public AzEncourageCash outstanding(String outstanding) {
        this.outstanding = outstanding;
        return this;
    }

    public void setOutstanding(String outstanding) {
        this.outstanding = outstanding;
    }

    public String getIncentiveToCdk() {
        return incentiveToCdk;
    }

    public AzEncourageCash incentiveToCdk(String incentiveToCdk) {
        this.incentiveToCdk = incentiveToCdk;
        return this;
    }

    public void setIncentiveToCdk(String incentiveToCdk) {
        this.incentiveToCdk = incentiveToCdk;
    }

    public String getEncourageBudget() {
        return encourageBudget;
    }

    public AzEncourageCash encourageBudget(String encourageBudget) {
        this.encourageBudget = encourageBudget;
        return this;
    }

    public void setEncourageBudget(String encourageBudget) {
        this.encourageBudget = encourageBudget;
    }

    public String getSourceSystem() {
        return sourceSystem;
    }

    public AzEncourageCash sourceSystem(String sourceSystem) {
        this.sourceSystem = sourceSystem;
        return this;
    }

    public void setSourceSystem(String sourceSystem) {
        this.sourceSystem = sourceSystem;
    }

    public String getSourceNameCode() {
        return sourceNameCode;
    }

    public AzEncourageCash sourceNameCode(String sourceNameCode) {
        this.sourceNameCode = sourceNameCode;
        return this;
    }

    public void setSourceNameCode(String sourceNameCode) {
        this.sourceNameCode = sourceNameCode;
    }

    public String getRemark() {
        return remark;
    }

    public AzEncourageCash remark(String remark) {
        this.remark = remark;
        return this;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Instant getGmtModified() {
        return gmtModified;
    }

    public AzEncourageCash gmtModified(Instant gmtModified) {
        this.gmtModified = gmtModified;
        return this;
    }

    public void setGmtModified(Instant gmtModified) {
        this.gmtModified = gmtModified;
    }

    public String getModifiedUser() {
        return modifiedUser;
    }

    public AzEncourageCash modifiedUser(String modifiedUser) {
        this.modifiedUser = modifiedUser;
        return this;
    }

    public void setModifiedUser(String modifiedUser) {
        this.modifiedUser = modifiedUser;
    }

    public Instant getGmtCreate() {
        return gmtCreate;
    }

    public AzEncourageCash gmtCreate(Instant gmtCreate) {
        this.gmtCreate = gmtCreate;
        return this;
    }

    public void setGmtCreate(Instant gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public String getCreateUser() {
        return createUser;
    }

    public AzEncourageCash createUser(String createUser) {
        this.createUser = createUser;
        return this;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getAdd1() {
        return add1;
    }

    public AzEncourageCash add1(String add1) {
        this.add1 = add1;
        return this;
    }

    public void setAdd1(String add1) {
        this.add1 = add1;
    }

    public String getAdd2() {
        return add2;
    }

    public AzEncourageCash add2(String add2) {
        this.add2 = add2;
        return this;
    }

    public void setAdd2(String add2) {
        this.add2 = add2;
    }

    public String getAdd3() {
        return add3;
    }

    public AzEncourageCash add3(String add3) {
        this.add3 = add3;
        return this;
    }

    public void setAdd3(String add3) {
        this.add3 = add3;
    }

    public String getAdd4() {
        return add4;
    }

    public AzEncourageCash add4(String add4) {
        this.add4 = add4;
        return this;
    }

    public void setAdd4(String add4) {
        this.add4 = add4;
    }

    public String getAdd5() {
        return add5;
    }

    public AzEncourageCash add5(String add5) {
        this.add5 = add5;
        return this;
    }

    public void setAdd5(String add5) {
        this.add5 = add5;
    }
    // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        AzEncourageCash azEncourageCash = (AzEncourageCash) o;
        if (azEncourageCash.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), azEncourageCash.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "AzEncourageCash{" +
            "id=" + getId() +
            ", parentId=" + getParentId() +
            ", settleBatchId='" + getSettleBatchId() + "'" +
            ", encourageId='" + getEncourageId() + "'" +
            ", encourageObject='" + getEncourageObject() + "'" +
            ", encourageSecondObject='" + getEncourageSecondObject() + "'" +
            ", payCash='" + getPayCash() + "'" +
            ", outstanding='" + getOutstanding() + "'" +
            ", incentiveToCdk='" + getIncentiveToCdk() + "'" +
            ", encourageBudget='" + getEncourageBudget() + "'" +
            ", sourceSystem='" + getSourceSystem() + "'" +
            ", sourceNameCode='" + getSourceNameCode() + "'" +
            ", remark='" + getRemark() + "'" +
            ", gmtModified='" + getGmtModified() + "'" +
            ", modifiedUser='" + getModifiedUser() + "'" +
            ", gmtCreate='" + getGmtCreate() + "'" +
            ", createUser='" + getCreateUser() + "'" +
            ", add1='" + getAdd1() + "'" +
            ", add2='" + getAdd2() + "'" +
            ", add3='" + getAdd3() + "'" +
            ", add4='" + getAdd4() + "'" +
            ", add5='" + getAdd5() + "'" +
            "}";
    }
}
